﻿using Cotizav.Entidades;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Condicion
{
    public partial class BuscarCondicion : Form
    {
        private List<CotizacionCondicion> result;

        public List<CotizacionCondicion> Result
        {
            get { return result; }
            set { result = value; }
        }

        public BuscarCondicion()
        {
            InitializeComponent();

            result = new List<CotizacionCondicion>();
        }

        private void LoadComboTipoCondicion()
        {
            LogicaNegocio.TipoCondicionBLL tipoCondicionBLL = new LogicaNegocio.TipoCondicionBLL();
            cmbFiltro.DataSource = tipoCondicionBLL.Listar();
            cmbFiltro.DisplayMember = "Descripcion";
            cmbFiltro.ValueMember = "IdTipoCondicion";
            cmbFiltro.SelectedIndex = -1;
        }

        private void LoadGridCondicion()
        {
            LogicaNegocio.CondicionBLL condicionBLL = new LogicaNegocio.CondicionBLL();
            //gridCondiciones.DataSource = condicionBLL.Listar();
            gridCondiciones.DataSource = condicionBLL.Listar(new Nullable<int>());
            gridCondiciones.ClearSelection();
        }

        private void BuscarCondicion_Load(object sender, EventArgs e)
        {
            LoadComboTipoCondicion();
            LoadGridCondicion();
        }

        private void gridCondiciones_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridCondiciones.DataSource != null)
            {
                gridCondiciones.Columns["Id"].Visible = false;
                gridCondiciones.Columns["IdTipoCondicion"].Visible = false;
                gridCondiciones.Columns["IdTipoCotizacion"].Visible = false;
                gridCondiciones.Columns["nombreCondicion"].HeaderText = "Condición";
                gridCondiciones.Columns["esDefecto"].HeaderText = "¿Defecto?";
                gridCondiciones.Columns["statusFlag"].Visible = false;
                gridCondiciones.Columns["activo"].Visible = false;
                gridCondiciones.Columns["Descripcion"].HeaderText = "Descripción";
                gridCondiciones.Columns["Descripcion"].DisplayIndex = 0;
            }
        }

        private void gridCondiciones_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (gridCondiciones.Columns[e.ColumnIndex].Name == "esDefecto")
            {
                if (e.Value.ToString() == "0")
                {
                    e.Value = "No";
                }
                else if (e.Value.ToString() == "1")
                {
                    e.Value = "Si";
                }
            }
        }

        private void gridCondiciones_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (gridCondiciones.SelectedRows.Count > 0)
            {
                //modificar segun consulta
                //Entidades.Condicion selCondicion = gridCondiciones.SelectedRows[0].DataBoundItem as Entidades.Condicion;
                txtDescripcion.Text = gridCondiciones.SelectedRows[0].Cells["nombreCondicion"].Value.ToString();
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (chkFiltrar.Checked)
            {
                if (gridCondiciones.DataSource != null)
                {
                    if (cmbFiltro.SelectedIndex >= 0)
                    {
                        DataTable resultSet = gridCondiciones.DataSource as DataTable;

                        //Filtro
                        DataView dvFilter = new DataView(resultSet);
                        dvFilter.RowFilter = string.Format("Descripcion = '{0}'", (cmbFiltro.SelectedItem as Entidades.TipoCondicion).Descripcion);

                        gridCondiciones.DataSource = dvFilter.ToTable();
                        gridCondiciones.ClearSelection();
                    }
                }
            }
            else
            {
                LoadComboTipoCondicion();
                LoadGridCondicion();
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (gridCondiciones.SelectedRows.Count > 0)
            {
                foreach (DataGridViewRow row in gridCondiciones.SelectedRows)
                {
                    Entidades.CotizacionCondicion newCotCondicion = new CotizacionCondicion()
                    {
                        IdTipoCondicion = row.Cells["IdTipoCondicion"].Value != null ? Int32.Parse(row.Cells["IdTipoCondicion"].Value.ToString()) : new Nullable<int>(),
                        TipoCondicion = row.Cells["Descripcion"].Value != null ? row.Cells["Descripcion"].Value.ToString() : string.Empty,
                        Descripcion = row.Cells["nombreCondicion"].Value != null ? row.Cells["nombreCondicion"].Value.ToString() : string.Empty
                    };

                    result.Add(newCotCondicion);
                }

                this.DialogResult = DialogResult.OK;
            }
        }
    }
}
